package ejT5;

import java.util.Scanner;

public class Ej17 {
	private static int altura;
	private static int[] anterior, actual;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		System.out.print("Introduce altura: ");
		altura = sc.nextInt() * 2 - 1;

		for (int i = 1; i <= altura; i += 2) {

			int esp = altura - i;

			String linea = pintaEspacios(esp) + pintaNumeros(i);
			System.out.println(linea);

		}

	}

	private static String pintaEspacios(int n) {
		String s = "";

		for (int i = 0; i < n; i++) {
			s += " ";
		}
		return s;
	}

	private static String pintaNumeros(int n) {

		if (n == 1) {
			return "1";
		} else if (n == 3) {
			anterior = new int[3];
			anterior[0] = 1;
			anterior[1] = 1;
			anterior[2] = 1;
			return "1 1 1";	
		} else {			
			actual = new int[n / 2 + 1];
			String s = "";
			actual[0] = 1;
			s += "1 ";
			
			for (int i = 1; i < n / 2; i++) {
				int n1 = anterior[i-1];
				int n2 = anterior[i];
				int n3 = n1 + n2;
				actual[i] = n3;
				s += n3 + " ";
			}
			s += actual[n / 2] + " ";

			for (int i = (n / 2) - 1; i >= 0; i--) {
				s += actual[i] + " ";
			}

			anterior = actual;
			return s;
		}
	}

}
